package com.boss.thirteen.service;

import com.boss.common.entity.PageDTO;
import com.boss.framework.dto.PaginationDTO;
import com.boss.framework.exception.AppRuntimeException;
import com.boss.sys.ca.user.dto.UserDTO;
import com.boss.thirteen.entity.SalaryThirteenMonth;
import com.boss.thirteen.entity.ThirteenAgencyVerify;

import java.util.List;
import java.util.Map;

public interface ISalaryThirteenMonthEndService {

    /**
     * 分页查询 单位工资编报数据
     * @param paginationDTO
     * @param agencyId
     * @return
     * @throws AppRuntimeException
     */
    PageDTO<SalaryThirteenMonth> getUnitSalaryReportPage(PaginationDTO paginationDTO
            , String agencyId, String flag, Map<String,Object> condition, UserDTO userDTO, String menuid) throws AppRuntimeException;

    /**
     * 获取十三月工资财政审核数据各单位汇总信息
     * @param paginationDTO
     * @param agencyId
     * @param flag
     * @param userDTO
     * @param menuId
     * @return
     * @throws AppRuntimeException
     */
    PageDTO<Map<String,Object>> getVerifySalaryData(PaginationDTO paginationDTO, String agencyId, String flag,  UserDTO userDTO, String menuId,Map<String,Object> otherParams) throws AppRuntimeException;

    /**
     * 查询十三月工资单位上报情况
     * @param paginationDTO
     * @param flag
     * @param userDTO
     * @param menuId
     * @return
     * @throws AppRuntimeException
     */
    PageDTO<ThirteenAgencyVerify> queryAgencySubmitStatus(PaginationDTO paginationDTO, String flag, UserDTO userDTO, String menuId) throws AppRuntimeException;

    /**
     * 获取表头
     * @param agencyId
     * @param condition
     * @param userDTO
     * @return
     */
    List<String> getColumnName(String agencyId, Map<String,Object> condition, UserDTO userDTO,boolean flag);

    /**
     * 查询十三月工资未添加到单位的人员
     * @param agencyId
     * @param province
     * @return
     */
    List<SalaryThirteenMonth> selectSalaryThirteenPersonFromHistory(String agencyId,String province);
    /**
     * 十三月工资单位增加人员
     * @param stms
     */
    void addSalaryThirteenMonth(List<SalaryThirteenMonth> stms) throws Exception;
    /**
     * 删除十三月工资数据
     * @param ids
     */
    void deleteThirteenMonth(List<String> ids);

    /**
     * 批量修改十三月工资
     * @param list
     */
    void batchUpdateSalaryThirteenMonth(List<SalaryThirteenMonth> list) throws Exception;

    /**
     * 通过单位id查询单位数据汇总信息，变动信息数量
     * @param agencyId
     * @return
     */
    Map<String,Object> queryThirteenCount(String agencyId);

    /**
     * 获取单位增减人员信息
     * @param agencyId
     * @return
     */
    List<Map<String, Object>> queryThirteenChangePersonInfo(String agencyId);
}
